home *** CD-ROM | disk | FTP | other *** search
/ PC Answers 2003 September / PC Answers September 2003.iso / Software / trial / MonitorIT 5.2.06 / monitorit_fullsetup.exe / data1.cab / Rpm / ViewServers.asp < prev    next >
Encoding:
Text File  |  2003-06-24  |  40.0 KB  |  1,071 lines

  1. <html>
  2. <head>
  3. <title>ServerWatch Display</title>
  4.  
  5. <link rel="stylesheet" type="text/css" href="css/rpmstyle.css">
  6. <style>
  7. .EventLog { border-style : solid; border-width : 3px; overflow : scroll;  background-color:white }
  8. .EventLog { border-top-color : graytext; border-left-color : graytext; border-bottom-color : white; border-right-color : white}
  9.  
  10. .VAMainBox { border: none; background-color : activeborder }
  11.  
  12. .PopUpBox { margin:0; padding:0; overflow : scroll; width : 95% }
  13. .PopUpBox { border-style : solid; border-width : 2px; overflow : scroll;  background-color:white }
  14. .PopUpBox { border-top-color : #555555; border-left-color : #555555; border-bottom-color : #E0E0E0; border-right-color : #E0E0E0 }
  15.  
  16. .PopUpSSBox { background-color:activeborder; position:absolute; margin:0; padding:0; border : solid thin; }
  17. .PopUpSSBox { border-top-color : #E0E0E0; border-left-color : #E0E0E0; border-bottom-color : #555555; border-right-color : #555555 }
  18.  
  19. </style>
  20. </head>
  21.  
  22. <body class="bodyc" scroll="no" style="margin:3px; overflow: none"language="JavaScript" RPMHostIP="!BreakoutBot:MonitorIP!" RPMHostPort="!BreakoutBot:MonitorPort!" onclick="checkClick()" RPMUserName="!BreakoutBot:UserName!" BOBDone="!BreakoutBot:Done!" onload="top.banner.savePageCoord(event,document.body,'ServerWatch'); InitRpmCC_VA();" onbeforeunload="DiscoRpmCC_VA()" onresize="processSizeChange()" onkeydown="processBSP()">
  23.  
  24. <script LANGUAGE="JavaScript">
  25. <!--
  26. var bdH = 0;
  27. var byM = null;
  28. var borderSz = 2; // Thin Bord is 2pixels
  29. var STid = null; // Timeout ID
  30. var Tid = null, CTid= null, LTid = null, ETid = null;
  31. var StopFlag = false; // abort Discovery process
  32. var ELogWinInit = ""; // save for ElogWin init HTML
  33. var ELBgFlg = 0; // Log Background color toggle
  34. var PuPW = "500px", PuPWu=500, PuPH = "250px",PuPHu=250;
  35. var PopUH = 0;
  36. var PopUL = 0;
  37. var TitleTop = ButtonTop = 0;
  38. var TitleLeft = ButtonLeft = 0;
  39. var SpecificationsMade = false;
  40. var ValidateFilter = true; // Validate Filter on entry
  41. var Hp = null; // Host port
  42. var ReconnectEvent = false;
  43. var GetMRU = true;
  44.  
  45. var AC_CompStoreArr = new Array();
  46. var AC_ServicesStoreArr = new Array();
  47. var AC_FilterStoreArr = new Array();
  48. var AL_AlertStoreArr = new Array();
  49.  
  50. // Capture and ignore script errors
  51.     window.onerror = wwScrErr;
  52. function wwScrErr() {
  53.     return true;
  54. }
  55.  
  56. /* On Load tell the Comm control to Connect to the Server */
  57. function InitRpmCC_VA() {
  58.     top.MainLoaded = true; // Flag that Main is now loaded
  59.     top.banner.savePageCoord(event,document.body,"ServerWatch");
  60.     byM = 2*parseFloat(document.body.style.margin);
  61.     processSizeChange();
  62.     // Initialize Graph Scale Drop Down
  63.     for ( var i=1; i<=19; i++ ) {
  64.         addElementToSelect(SS_Scale,(i*50)+" ms.   ");
  65.     }
  66.     for ( var i=1; i<=20; i++ ) {
  67.         addElementToSelect(SS_Scale,(i)+" secs.   ");
  68.     }
  69.  
  70.       /* Connect to Server */
  71.     Hp = parseInt(document.body.RPMHostPort,10);
  72.     RpmCC_VA.Connect(document.body.RPMHostIP,Hp, "");
  73.  
  74.     /* get Track Last checkbox state */
  75.     cc = top.banner.RpmCC_Ban.RegGetKey(top.banner.ServerID+"TrackLast"); // get state
  76.     if ( cc == "unchecked" ) { // If not checked 
  77.         TrackLastEnabled.checked = "";
  78.     }
  79.     else { 
  80.         TrackLastEnabled.checked == "CHECKED";
  81.     }
  82.     /* get ServiceDownAtTop checkbox state */
  83.     cc = top.banner.RpmCC_Ban.RegGetKey(top.banner.ServerID+"ServiceDownAtTop"); // get state
  84.     if ( cc == "unchecked" ) { // If not checked 
  85.         ServiceDownAtTop.checked = "";
  86.     }
  87.     else { 
  88.         ServiceDownAtTop.checked == "CHECKED";
  89.     }
  90. }
  91. function processReconnect() {
  92.     Tid = null;
  93.     if ( RpmCC_VA.IsConnected() ) {
  94.         Tid = setTimeout("processConnectionCheck()",30000); // Delay 30 secs then check connection
  95.         return;
  96.     }
  97.     RpmCC_VA.Connect(document.body.RPMHostIP,Hp, ""); 
  98. }
  99. function processConnectConfirmed() {
  100.     // Restore Filter and Computer Store    
  101.     if ( ReconnectEvent == false ) {
  102.          var fs = RpmCC_VA.RegGetKey(top.banner.ServerID+"ServerWatchFilterArray");
  103.          AC_FilterStoreArr.length = 0;
  104.          if ( fs != "" ) {
  105.             AC_FilterStoreArr = fs.split("~");
  106.         }
  107.         
  108.         // Get saved sort code
  109.         fs = RpmCC_VA.RegGetKey(top.banner.ServerID+"ServerWatchSortCode");
  110.         LogSortCode = ( fs != "") ? parseInt(fs,10) : 7;
  111.         
  112.         // Get saved Response Time Graph Scale Max
  113.         fs = RpmCC_VA.RegGetKey(top.banner.ServerID+"ServerWatchScaleMax");
  114.         RespMax = ( fs != "") ? parseInt(fs,10) : 500;
  115.         
  116.         GetMRU = true;
  117.          processLogWindow(); // initialize Log Window
  118.         processAlLookup(); //initiate read for Alert Groups and Services
  119.         if ( top.QuickStartProcessing ) {
  120.             showHelp('Help/QuickStart_Help.htm#ServerWatch');
  121.             window.focus();
  122.             top.QuickStartProcessing = false;
  123.         }
  124.         ReconnectEvent = true;
  125.     }
  126.     else {
  127.         //RpmCC_VA.GetServicesLogMRU(); // get most recent Server log ServerWatch messages
  128.         RpmCC_VA.AllowNewMessages(); // enable new Server Log messages to be sent
  129.     }
  130.     top.Rstatus.Pstat("Connected");
  131.     if ( Tid != null ) {
  132.         clearTimeout(Tid); // stop timeout routine
  133.     }
  134.     Tid = setTimeout("processConnectionCheck()",30000); // Delay 30 secs then check connection
  135. }
  136. function processConnectionCheck() {
  137.     Tid = null;
  138.     RpmCC_VA.SendKeepAlive("Check");
  139.     Tid = setTimeout("processConnectionCheck()",30000); // Delay 30 secs then check connection
  140. }
  141.  
  142. function processTrackLastClick() {
  143.     // Save Track Last checkbox state
  144.     cc = ( TrackLastEnabled.checked == false ) ? "unchecked" : "checked";
  145.     top.banner.RpmCC_Ban.RegSetKey(top.banner.ServerID+"TrackLast",cc); // set state
  146. }
  147. function processServiceDownAtTopClick() {
  148.     // Save Failure At Top checkbox state
  149.     cc = ( ServiceDownAtTop.checked == false ) ? "unchecked" : "checked";
  150.     top.banner.RpmCC_Ban.RegSetKey(top.banner.ServerID+"ServiceDownAtTop",cc); // set state
  151.     GoDoSort(); // go do it
  152. }
  153.  
  154. // Process Database Change event
  155. function processDBChanged() {
  156.     CTid = null;
  157.     top.banner.processStartComm(); 
  158.     
  159.     // Insure Specify pop-up is hidden and disabled
  160.   //SpecifyButton.className = "BoxButtonD"; // disable button
  161.    SpecifyButton.disabled = "disabled"; // disable button
  162.     PopUpDiv.style.display = "none";
  163.     
  164.     // Clear Stores
  165.     AL_AlertStoreArr.length = 0;
  166.     AC_ServicesStoreArr.length = 0;
  167.     GetMRU = false;
  168.     ValidateFilter = true;
  169.     processAlLookup(); //initiate read for Alert Groups and Services
  170.     top.Rstatus.StatDB.style.display = "none";
  171.     Tid = setTimeout("finishDBChange()",1000); // Delay 
  172. }
  173. /* Get MRU Log Messages for ServerWatch */
  174. function finishDBChange() {
  175.     Tid = null; // reset
  176.    //SpecifyButton.className = "BoxButton"; // enable button
  177.    SpecifyButton.disabled = ""; // enable button
  178.     top.banner.processStopCommX();
  179. }
  180.  
  181. /* On Unload tell the Comm control to Disconnect from the Server */
  182. function DiscoRpmCC_VA() {
  183.     top.BannerMenuShow();
  184.     RpmCC_VA.Disconnect();
  185.     top.banner.processStopCommX();
  186.     if ( STid != null ) {
  187.         clearTimeout(STid); // stop timeout routine
  188.     }
  189.     if ( Tid != null ) {
  190.         clearTimeout(Tid); // stop timeout routine
  191.     }
  192.     if ( LTid != null ) {
  193.         clearTimeout(LTid); // stop timeout routine
  194.     }
  195.     if ( ETid != null ) {
  196.         clearTimeout(ETid); // stop timeout routine
  197.     }
  198. }
  199.  
  200. var SCbsy = false;
  201. function processSizeChange() {
  202.     if ( SCbsy ) 
  203.         return;
  204.     SCbsy = true;
  205.     // Display Height and Width
  206.     bCh = document.body.clientHeight;
  207.     bCw = document.body.clientWidth;
  208.     
  209.     // Minimums
  210.     bCh = (bCh < bdH+byM+PuPHu+20) ? bdH+byM+PuPHu+20 : bCh;
  211.     bCw = (bCw < PuPWu+10) ? PuPWu+10 : bCw;
  212.    document.body.scroll = (bCw <= PuPWu+10 || bCh <= bdH+byM+PuPHu+20) ? "yes" : "no";
  213.  
  214.    // Set Height/Widths for Main window area
  215.     VA_MainBox.style.height = bCh-(bdH+byM-borderSz)-10;
  216.     VA_MainBox.style.width = bCw-byM-4;
  217.     VA_MainBox.style.display = "";
  218.    
  219.    // PopUp 
  220.    PopUpDiv.style.left = PopUL = (bCw-PuPWu)/2;
  221.    PopUpDiv.style.top = "20px"; 
  222.    PopUpDiv.style.height = PopUH = bCh-(bdH+byM-borderSz)-35;
  223.    PopUpDiv.style.width = PuPW;
  224.    PopUpSS.style.left = PopSSUL = (bCw-300)/2;
  225.    AL_CCOneServ.style.height = PopUH-50;
  226.  
  227.     //PopUpContext Menu
  228.    PopUpContextSize(bCw);
  229.  
  230.    // Set Height/Widths for Log areas
  231.     ELogWin.style.height = bCh-(bdH+byM-borderSz)-TitleDivSize;
  232.     ELogWin.style.width = bCw-byM-10;
  233.     SCbsy = false;
  234. }
  235.  
  236. // Print Discovery
  237. var DiscStatWindow = null;
  238. function processPrintStatus() {
  239.     if ( !top.banner.IE55orBetter ) {
  240.         alert("Print requires IE 5.5/SP1 or greater. Download current, free IE update from Microsoft's web site");
  241.         return;
  242.     }
  243.     FakeBut.click();    // simulate event to call "savePageCoord(...)"
  244.     var wprop = "height="+top.banner.bCh+",width="+top.banner.bCw
  245.     wprop += ",top="+(top.banner.bY-28)+",left="+(top.banner.bX-4)+",scrollbars";
  246.     var rName = ""+Math.random(); // use Random number to get unique Window name
  247.     rName = rName.substring(2,rName.length);
  248.     DiscStatWindow = window.open("",rName,wprop);
  249.     if ( DiscStatWindow == null ) {
  250.         return;   
  251.     }
  252.     ELogArray.innerHTML = ""; // initailize
  253.     for ( var i=0; i<LogArray.length; i++ ) {
  254.         addElementToSelect(ELogArray,LogArray[i]); 
  255.     }
  256.  
  257.     var dh = "<html><head><title>MonitorIT - ServerWatch Status Report</title>";
  258.     dh += "<link rel='stylesheet' type='text/css' href='css/Rpmstyle.css'></head><body";
  259.     dh += " title='Exit to Close Window when Printing is complete'>"; 
  260.     dh += ELogWin.innerHTML;
  261.     dh += '<script LANGUAGE="JavaScript">ploghdr.border="1"; ploghdr1.width="173"; ploghdr2.width="88"; ploghdr3.width="38"; ploghdr4.width="48"; var LogArrayRecLength = 14; for ( var i=0, j=""; i<ELogArray.length; i+=LogArrayRecLength ) { j = document.all["Graphline"+i].rtot; document.all["Graphline"+i].innerText = j; } window.focus();';
  262.     dh += ' </script></body></html>';
  263.     DiscStatWindow.document.open();
  264.     DiscStatWindow.document.write(dh)
  265.     DiscStatWindow.document.close();
  266.     DiscStatWindow.print();
  267. }
  268.  
  269. /* Initialize the Log and Filter Windows */
  270. function processLogWindow() {
  271.     /* Format Output to Log Window */
  272.     FOps = "<table id='ploghdr' border='0' cellpadding='1' cellSpacing='1' width='100%'><tr>";
  273.     FOps += "<td id='ploghdr1' width='175' colspan='1' align='center' title='Sort Log Entries by Computer Name' onclick='processSort(2)' style='cursor:hand; background-color:activeborder' class='optextb'>";
  274.     FOps += "Server/Computer Name" + "</td>";
  275.     FOps += "<td id='ploghdr2' width='90' colspan='1' align='center' title='Sort Log Entries by IP Address' onclick='processSort(4)' style='cursor:hand; background-color:activeborder' class='optextb'>";
  276.     FOps += "IP Address" + "</td>";
  277.     FOps += "<td id='ploghdr3' width='52' colspan='1' align='center' title='Sort Log Entries by Service Type' onclick='processSort(1)' style='cursor:hand; background-color:activeborder' class='optextb'>";
  278.     FOps += "Type" + "</td>";
  279.     FOps += "<td id='ploghdr4' width='50' colspan='1' align='center' title='Sort Log Entries by Time' onclick='processSort(7)' style='cursor:hand; background-color:activeborder' class='optextb'>";
  280.     FOps += "Last" + "</td>";
  281.     FOps += "<td id='ploghdr5' width='40' colspan='1' align='center' style='background-color:activeborder' class='optextb'>";
  282.     FOps += "%Up" + "</td>";
  283.     FOps += "<td width='*' colspan='1' align='center' title='Set Service Response Time Graph Scale' onclick='processSetScale()' style='cursor:hand; background-color:activeborder' class='optextb'>";
  284.     FOps += "Response Time" + "</td>";
  285.     FOps += "</tr></table>";
  286.     ELogWin.insertAdjacentHTML("afterBegin",FOps);
  287.      ELogWinInit = ELogWin.innerHTML; // save for clear log
  288.      WarningBox.style.display = "";
  289. }
  290.  
  291. /* Process Clear Log button click */
  292. function processClearButton() {
  293.     processRefresh(); // clear the display
  294.     GetMRU = true;
  295.    getComputerInfo();
  296. }
  297. function processRefresh() {
  298.     ELogWin.innerHTML = ELogWinInit; // clear log
  299.     LogArray.length = 0;
  300.     LogArrayRecObjectArr.length = 0;
  301.     ELBgFlg = 0; // reset
  302.    //ClearButton.className = "BoxButtonD"; // disable button
  303.    ClearButton.disabled = "disabled"; // disable button   
  304.    //StatusPrintButton.className = "BoxButtonD"; // disable button
  305.    StatusPrintButton.disabled = "disabled"; // disable button   
  306. }
  307.  
  308. // Process Server Log Message
  309. function procRcv(nLength, szText, sruncts) {
  310.     var warr= new Array();
  311.     var warr1 = new Array();
  312.     warr = szText.split(" "); // parse  message
  313.     // if PING, get status, IP Address, and Computer ID
  314.     
  315.     if ( warr[4] == "PING" ) {
  316.         if ( warr[5] == "thread" )
  317.             return; // ignore 
  318.         Nstat = ( warr[9] == "successful:" ) ? 0 : 1;
  319.         Nipaddr = warr[6]; 
  320.         Nid = warr[8]; 
  321.         Ntype = warr[4];
  322.     }
  323.     // check if FTP, SMTP, HTTP, POP, DNS,or USER
  324.     else if ( warr[4] == "FTP" || warr[4] == "SNMP" || warr[4] == "SMTP" || warr[4] == "HTTP" || warr[4] == "POP" ||
  325.                     warr[4] == "DNS" || warr[4] == "USER" || warr[4] == "TELNET" || warr[4] == "L_NOTES") {
  326.         if ( warr[5] == "thread" )
  327.             return; // ignore 
  328.         Nstat = ( warr[13] == "successful:" ) ? 0 : 1;
  329.         Nipaddr = warr[7]; 
  330.         Nid = warr[9];
  331.         Ntype = warr[4];
  332.     } 
  333.     // check if AGENT
  334.     else if ( warr[4] == "AGENT") {
  335.         if ( warr[5] == "thread" )
  336.             return; // ignore 
  337.         Nstat = ( warr[10] == "successful:" ) ? 0 : 1;
  338.         Nipaddr = warr[7]; 
  339.         Nid = warr[9];
  340.         Ntype = warr[4];
  341.     } // otherwise ignore
  342.     else if ( warr[2] == "PING" ||
  343.         warr[2] == "FTP" || warr[2] == "SNMP" || warr[2] == "SMTP" || warr[2] == "HTTP" || warr[2] == "POP" || 
  344.         warr[2] == "DNS" || warr[2] == "USER" || warr[2] == "TELNET" || warr[2] == "L_NOTES" || warr[2] == "AGENT") {
  345.         if ( warr[3] == "thread" )
  346.             return; // ignore 
  347.         Nstat = ( warr[11] == "successful:" ) ? 0 : 1;
  348.         Nipaddr = warr[5]; 
  349.         Nid = warr[7];
  350.         Ntype = warr[2];
  351.     } 
  352.     else if ( warr[4] == "SQLCONNECT" ) {
  353.         if ( warr[5] == "thread" )
  354.             return; // ignore 
  355.         Ntype = "SQL";
  356.         Nipaddr = "";
  357.         if ( warr[11] == "successful:" ) {
  358.             Nstat = 0;
  359.             Nid = warr[10];
  360.         }  
  361.          else {
  362.             Nstat = 1;
  363.             Nid = warr[9];
  364.         }   
  365.      }
  366.     else if ( warr[2] == "SQLCONNECT" ) {
  367.         Ntype = "SQL";
  368.         Nipaddr = "";
  369.         Nid = warr[7];
  370.         Nstat = ( warr[11] == "successful:" ) ? 0 : 1;
  371.      }    
  372.     else if ( warr[4] == "ORACLE" ) {
  373.         if ( warr[5] == "thread" )
  374.             return; // ignore 
  375.         Ntype = warr[4];
  376.         Nipaddr = "";
  377.         if ( warr[12] == "successful:" ) {
  378.             Nstat = 0;
  379.             Nid = warr[11];
  380.         }  
  381.          else {
  382.             Nstat = 1;
  383.             Nid = warr[10];
  384.         }   
  385.      }
  386.     else if ( warr[2] == "ORACLE" ) {
  387.         Ntype = warr[2];
  388.         Nipaddr = "";
  389.         Nid = warr[7];
  390.         Nstat = ( warr[11] == "successful:" ) ? 0 : 1;
  391.      }// otherwise ignore
  392.     else { return; }
  393.     
  394.     // convert ' to `
  395.     warr1 = szText.split("'");
  396.     szText = warr1.join("`");
  397.     Rtime = -2;
  398.     if ( Nstat == 0 ) { // if successful, no 'Reason' message
  399.         Nreas = "";
  400.         // get Response Time data
  401.         Rtime = szText.lastIndexOf("(T=");
  402.         if ( Rtime > 0 ) {
  403.             var Ts = szText.substring(Rtime+3);
  404.             Rtime = parseInt(Ts,10);
  405.         }
  406.         else {
  407.             Rtime = -1;
  408.         }
  409.     }
  410.     else { // otherwise, parse out the reason for the failure
  411.         warr1 = szText.split("failed: ");
  412.         Nreas = warr1[1];    
  413.         if ( warr[4] == "PING" && warr1.length > 2) {
  414.            Nreas += "failed: " + warr1[2];
  415.        }
  416.     }
  417.     Ndt = warr[1].substring(2,10); // Time
  418.     Nid = ""+parseInt(Nid,10); // Computer ID
  419.     outputLogEvent(Nstat,Nipaddr,Ntype,Nreas,Nid,Ndt,szText,Rtime,sruncts);
  420. }
  421.  
  422. /* Check if Event Passes Filter Test and if so, Output to Log Window */
  423. var LogArrayRecLength = 14; 
  424. var LogArrayRecObjectArr = new Array();
  425. var LogArray = new Array();
  426. var RespMax = 500; // Graph Scale in ms.
  427. var PrevLineObj = null
  428. var rescol = "";
  429. function outputLogEvent(Lstat,Lipaddr,Ltype,Lreason,Lid,Ldt,WMsg,Rtm,sruncts) {
  430.     var pctup = "";
  431.     if ( CheckFilterStore(Lid,Ltype) == false ) { // Exit if not in filter
  432.         return;
  433.     }
  434.     ocolor = (Lstat == 0) ? "g" : "r";
  435.     // Check if already in the log
  436.     var AlreadyInLog = false; // preset not in Log
  437.     var Lindx=0; // preset Log index
  438.     var Ravg=0, Rcnt=0, Rmax=0, Rup=0, Rdown=0; // initalize running counts
  439.     if ( LogArray.length > 0 ) { // if Log not empty
  440.         for ( ; Lindx<LogArray.length; Lindx+=LogArrayRecLength ) { // look for current Computer ID
  441.             if ( Lid == LogArray[Lindx] && Ltype == LogArray[Lindx+1] ) { 
  442.                 if ( Rtm == -1 ) { // if No Time Present (MRU message) & already in log, ignore
  443.                     return;
  444.                 }
  445.                 AlreadyInLog = true; // if match
  446.                 Cname = LogArray[Lindx+2]; // Computer Name
  447.                 Cdesc = LogArray[Lindx+3]; // Computer Description
  448.                 Caddr = LogArray[Lindx+4]; // Computer IP Address
  449.                 Ravg = parseInt(LogArray[Lindx+8],10); // Running Average
  450.                 Rcnt = parseInt(LogArray[Lindx+9],10); // Running Count
  451.                 Rmax = parseInt(LogArray[Lindx+10],10); // Running Max
  452.                 Rup = parseInt(LogArray[Lindx+11],10); // Running Up
  453.                 Rdown = parseInt(LogArray[Lindx+12],10); // Running Down
  454.                 FOps= ""; // initialize
  455.                 break;
  456.             }
  457.         }
  458.     }
  459.     if (Lstat != 0) { ++Rdown; } else { ++Rup; }
  460.     if ( AlreadyInLog == false ) { // add new line to log
  461.         Cname = getCompNameDesc(Lid); // get Name and Descr
  462.         if ( Cname == "" ) {
  463.             return; // exit if no name found
  464.         }
  465.         if ((ELBgFlg ^= 1) == 0) {
  466.             FOps = "<div id='Logline"+Lindx+"' style='background-color:white'>";
  467.         }
  468.         else {
  469.             FOps = "<div id='Logline"+Lindx+"' style='background-color:e8e8e8'>";
  470.         }
  471.         Cdesc = curCompDesc;
  472.         Caddr = curCompAddr;
  473.         if ( sruncts != "" ) {
  474.             var rcarr = new Array();
  475.             rcarr = sruncts.split(",");
  476.             Ravg = parseInt(rcarr[0],10); // Running Average
  477.             Rcnt = parseInt(rcarr[1],10); // Running Count
  478.             Rmax = parseInt(rcarr[2],10); // Running Max
  479.             Rup = parseInt(rcarr[3],10); // Running Up
  480.             Rdown = parseInt(rcarr[4],10); // Running Down  
  481.         }
  482.     }
  483.     Lipaddr = (Lipaddr == "") ? Caddr : Lipaddr;
  484.     CnameOut = (Cname.length > 40) ? Cname.substring(0,40)+"..." : Cname; // set to Computer Name
  485.     Ltitle = (Cname.length > 40) ? Cname+" / "+Cdesc : Cdesc;
  486.     Ltitle += " - Watch/Alert Name = "+getCurrentAlertGrpName(Lid,Ltype);
  487.     FOps += "<table border='0' cellpadding='1' cellSpacing='1' width='100%'><tr>";
  488.     FOps += "<td width='175' colspan='1' style='cursor:hand' class='optext" + ocolor + "'><span title='"+Ltitle+"' id='CmpName"+Lindx+"' >";
  489.     FOps += CnameOut + "</span></td>";
  490.     FOps += "<td width='90' colspan='1' class='optext" + ocolor + "'>";
  491.     FOps += Lipaddr + "</td>";
  492.     FOps += "<td width='52' colspan='1' class='optext" + ocolor + "'>";
  493.     FOps += Ltype + "</td>";
  494.     FOps += "<td width='50' colspan='1' style='cursor:hand' title='"+WMsg+"' class='optext" + ocolor + "'>";
  495.     FOps += Ldt + "</td>";
  496.     FOps += "<td width='40' colspan='1' style='cursor:hand' title='Up="+Rup+"; Down="+Rdown+"' class='optext" + ocolor + "'>";
  497.     if ( Rup == 0 ) { pctup = "0"; }
  498.     else if ( Rdown == 0 ) { pctup = "100"; }
  499.     else {
  500.         pctup = ""+(Math.round((Rup*10000)/(Rup+Rdown)))/100; 
  501.      }
  502.     FOps += pctup + "</td>";
  503.     
  504.     Tavg = 0; // initialize Response Time percentage
  505.     if ( Rtm == -2 ) { // if failure
  506.         Bavg = Aavg = Cavg = "0%"; Davg = "100%";
  507.         Rtm = 0;
  508.     }
  509.     else if ( Rtm == -1 ) { // if no response time present
  510.           Cavg = "100%"; Bavg = Aavg = Davg = "0%";
  511.     }
  512.     else { // process Response Time
  513.         // compute current Response Time percentage
  514.         Tavg = (Rtm * 100)/RespMax;
  515.         Tavg = Math.round(Tavg)
  516.         if ( Tavg < 1 ) { // insure at least 1%
  517.             Tavg = 1;
  518.         }
  519.         // set percentages 
  520.         Cavg = (100-Tavg)+"%";
  521.         Bavg = Tavg+"%";
  522.         Aavg = Davg = "0%";
  523.         // see if new max
  524.         Rmax = (Rtm > Rmax) ? Rtm : Rmax;
  525.     }
  526.     // if current per cent is greater than average
  527.     if ( Rtm > Ravg && Ravg > 0 ) { 
  528.         // set up bar graph to reflect percentage greater than average
  529.         CRavg = (Ravg * 100)/RespMax;
  530.         CRavg = Math.round(CRavg)
  531.         Bavg = CRavg+"%";
  532.         Aavg = (Tavg-CRavg)+"%";
  533.         Davg = "0%";
  534.     }
  535.     // Update running average, max, and count
  536.     if ( Rtm > 0 && sruncts == "" ) {
  537.           Ravg = ((Ravg * Rcnt) + Rtm)/(++Rcnt);
  538.         Ravg = Math.round(Ravg);
  539.     }
  540.     rtotals = "Last="+Rtm+"ms; Avg="+Ravg+"ms; Max="+Rmax+"ms";
  541.     prtot = "Up="+Rup+";Dn="+Rdown+"; "+rtotals;
  542.     FOps += "<td id='Graphline"+Lindx+"' rtot='"+prtot+"' width='*' colspan='1' class='optext"+ocolor+"'>"
  543.     FOps += "<table border='0' cellpadding='0' cellSpacing='0' height='12' width='100%'><tr>";
  544.     FOps += "<td width='"+Bavg+"' align='center' title='"+rtotals+"' style='cursor:hand; background-color:green'></td>";
  545.     FOps += "<td width='"+Aavg+"' align='center' title='"+rtotals+"' style='cursor:hand; background-color:orange'></td>";
  546.     FOps += "<td width='"+Davg+"' align='center' title='"+Lreason+"' style='cursor:hand; background-color:red'></td>";
  547.     FOps += "<td width='"+Cavg+"' title='"+rtotals+"' style='cursor:hand'></td>";
  548.     FOps += "</tr></table>";
  549.     
  550.     FOps += "</td>";
  551.     FOps += "</tr></table>";
  552.    //ClearButton.className = "BoxButton"; // enable button
  553.    ClearButton.disabled = ""; // enable button   
  554.    //StatusPrintButton.className = "BoxButton"; // enable button
  555.    StatusPrintButton.disabled = ""; // enable button   
  556.     if ( AlreadyInLog ) { // if Already In Log update the line
  557.         var LineObj = null;
  558.         var ObjIx = Lindx/LogArrayRecLength;
  559.         if ( ObjIx < LogArrayRecObjectArr.length ) {
  560.             var LineObj = LogArrayRecObjectArr[ObjIx];
  561.         }
  562.         if ( LineObj == null ) {
  563.             LineObj = document.all["Logline"+LogArray[Lindx+6]];
  564.              LogArrayRecObjectArr[ObjIx] = LineObj; // update log entry object
  565.         }
  566.         LineObj.innerHTML = FOps;
  567.          LogArray[Lindx+4] = Lipaddr; // update saved IP Addr
  568.          LogArray[Lindx+5] = WMsg; // update saved message
  569.          LogArray[Lindx+7] = Ldt; // update saved last time
  570.          LogArray[Lindx+8] = Ravg; // update saved running avergage
  571.          LogArray[Lindx+9] = Rcnt; // update saved running count
  572.          LogArray[Lindx+10] = Rmax; // update saved running max
  573.          LogArray[Lindx+11] = Rup; // update saved running up
  574.          LogArray[Lindx+12] = Rdown; // update saved running down
  575.          var udstat = (Lstat != 0) ? "A" : "B";
  576.          if (LogArray[Lindx+13] != udstat) { // if status changed
  577.              if ( STid == null && ServiceDownAtTop.checked ) {
  578.                 STid = setTimeout("GoDoSort()",10000); // Delay before sorting
  579.             }
  580.         }
  581.         LogArray[Lindx+13] = udstat; // save it        
  582.          
  583.         if ( PrevLineObj != null ) {
  584.             PrevLineObj.style.backgroundColor = rescol;
  585.         }
  586.         if ( TrackLastEnabled.checked ) {
  587.             rescol = LineObj.style.backgroundColor;
  588.             LineObj.style.backgroundColor = "scrollbar";
  589.             PrevLineObj = LineObj;
  590.         }
  591.         else {
  592.             PrevLineObj = null;
  593.         }
  594.     }
  595.     else { // otherwise, add New
  596.         FOps += "</div>";
  597.         ELogText.insertAdjacentHTML("afterBegin",FOps);
  598.         // save info in Store
  599.         Lindex = LogArray.length 
  600.         LogArray[Lindex] = Lid; 
  601.         LogArray[Lindex+1] = Ltype; 
  602.         LogArray[Lindex+2] = Cname; // Computer Name
  603.         LogArray[Lindex+3] = Cdesc; // Computer Description
  604.         LogArray[Lindex+4] = Lipaddr; 
  605.         LogArray[Lindex+5] = WMsg; 
  606.         LogArray[Lindex+6] = Lindx; 
  607.         LogArray[Lindex+7] = Ldt; 
  608.         LogArray[Lindex+8] = Ravg; 
  609.         LogArray[Lindex+9] = Rcnt; 
  610.         LogArray[Lindex+10] = Rmax; 
  611.         LogArray[Lindex+11] = Rup; 
  612.         LogArray[Lindex+12] = Rdown; 
  613.          LogArray[Lindx+13] = (Lstat != 0) ? "A" : "B"; // save up or down status 
  614.         
  615.         if ( STid == null && MRUDataArr.length == 0 && sruncts == "" ) {
  616.             STid = setTimeout("GoDoSort()",10000); // Delay before sorting
  617.         }
  618.     }
  619. }
  620.  
  621. // Process Header Column Click and Sort Accordingly
  622. var LogSortCode = 0;
  623. function GoDoSort() {
  624.     doSort(); // go process the Sort
  625.     STid = null; // reset t/o
  626. }
  627. function processSort(sortcode) {
  628.     LogSortCode = sortcode; // set sort Code
  629.     doSort();
  630.     // save sort code in the Registry
  631.     RpmCC_VA.RegSetKey(top.banner.ServerID+"ServerWatchSortCode",""+sortcode);
  632. }
  633. function doSort() {
  634.     var SArray = new Array();
  635.     var warr = new Array();
  636.     var sortcode = LogSortCode;
  637.     var udsort = "", runcounts = "";
  638.  
  639.     // create an array to sort on the specified parameter
  640.     for ( var i=0, j=0; i<LogArray.length; i+=LogArrayRecLength, j++) {
  641.         runcounts = LogArray[i+8]+","+LogArray[i+9]+","+LogArray[i+10]+","+LogArray[i+11]+","+LogArray[i+12];
  642.         udsort = ( ServiceDownAtTop.checked ) ? LogArray[i+13] : "";
  643.         SArray[j] = udsort+"???"+LogArray[i+sortcode].toLowerCase()+"???"+LogArray[i+5]+"???"+runcounts;
  644.     }
  645.     ELogWin.innerHTML = ELogWinInit; // clear log
  646.     LogArrayRecObjectArr.length = 0;
  647.     LogArray.length = 0;
  648.     ELBgFlg = 0; // reset
  649.     SArray.sort(); // now sort it
  650.     // Now go reprocess and display
  651.     for ( var i=SArray.length-1; i>=0; i-- ) {
  652.         warr = SArray[i].split("???"); // parse out the orig message
  653.         procRcv(warr[2].length, warr[2], warr[3]); // output to Log
  654.     }
  655. }
  656.  
  657. // Add Computer to Store if Not Already
  658. var CompRecLength = 4;
  659. function processCompAddToStore(CNme,CDesc,Cid,Addr) {
  660.     for ( var i=0; i<AC_CompStoreArr.length; i+=CompRecLength ) {
  661.         if ( Cid == AC_CompStoreArr[i] ) { // if in Store, update it
  662.             AC_CompStoreArr[i+1] = CNme; // update name
  663.             AC_CompStoreArr[i+2] = CDesc; // update description
  664.             AC_CompStoreArr[i+3] = Addr; // update description
  665.             return;
  666.         }
  667.     }
  668.     // Not in Store, Add now
  669.     var j = AC_CompStoreArr.length;
  670.     AC_CompStoreArr[j]  = Cid; 
  671.     AC_CompStoreArr[j+1] = CNme; 
  672.     AC_CompStoreArr[j+2] = CDesc; 
  673.     AC_CompStoreArr[j+3] = Addr; 
  674. }
  675. var curCompDesc = "";
  676. var curCompAddr = "";
  677. function getCompNameDesc(CompID) {
  678.     for ( var i=0; i<AC_CompStoreArr.length; i+=CompRecLength ) {
  679.         if ( CompID == AC_CompStoreArr[i] ) { // if in Store
  680.             curCompDesc = AC_CompStoreArr[i+2];
  681.             curCompAddr = AC_CompStoreArr[i+3]
  682.             return AC_CompStoreArr[i+1];
  683.         }
  684.     }
  685.     return "";
  686. }
  687.  
  688. // Check if Computer/Service Type is in the Filter
  689. function CheckFilterStore(LCid,LStype) {
  690.     // if Filter empty,accept everything
  691.     if ( AC_FilterStoreArr.length == 0 ) {
  692.         return true;
  693.     }
  694.     for ( var i=0; i<AC_FilterStoreArr.length; i+=FilterRecLength ) {
  695.         // if in Store
  696.         if ( LCid == AC_FilterStoreArr[i] && LStype == AC_FilterStoreArr[i+1] ) { 
  697.             return true;
  698.         }
  699.     }
  700.     return false;
  701. }
  702. function RemoveFromFilterStore(RCid,RStype) {
  703.     for ( var i=0; i<AC_FilterStoreArr.length; i+=FilterRecLength ) {
  704.         if ( RCid == AC_FilterStoreArr[i] && RStype == AC_FilterStoreArr[i+1] ) { // if found
  705.             for (var j=i+FilterRecLength; j < AC_FilterStoreArr.length; ++i, ++j) {
  706.                 AC_FilterStoreArr[i] = AC_FilterStoreArr[j];
  707.             }
  708.             AC_FilterStoreArr.length -= FilterRecLength;
  709.             return;
  710.         }
  711.     }
  712. }
  713. var FilterRecLength = 2;
  714. function AddToFilterStore(ACid,AStype) {
  715.     if ( CheckFilterStore(ACid,AStype) == true && AC_FilterStoreArr.length != 0) { // ignore if already in Filter
  716.         return;
  717.     }
  718.     var i = AC_FilterStoreArr.length
  719.     AC_FilterStoreArr[i] = ACid; 
  720.     AC_FilterStoreArr[i+1] = AStype; 
  721. }
  722.  
  723. // Set Graph Scale
  724. function processSetScale() {
  725.     var cscale = (RespMax >= 1000) ? (RespMax/1000)+19 : (RespMax/50);
  726.     SS_Scale.options[cscale-1].selected = "selected";     // Select current
  727.     PopUpSS.style.display = ""; // enable Pop-Up
  728. }
  729. function processDoneScale() {
  730.     PopUpSS.style.display = "none";
  731.     var cscale = (SS_Scale.selectedIndex+1); // set new scale max
  732.     RespMax = (cscale < 20) ? (cscale * 50) : ((cscale-19) * 1000);
  733.     RpmCC_VA.RegSetKey(top.banner.ServerID+"ServerWatchScaleMax",RespMax+" ms.");
  734.     top.Rstatus.Pstat("Response Time Graph Scale Max = "+RespMax+" ms.");
  735. }
  736.  
  737. // Process Specify and Done Button Click
  738. function processSpecifyButton() {
  739.     if ( ServExpandedCount > 0 ) { 
  740.        SetButtonState(bSelC,"0");
  741.        SetButtonState(bUselC,"0");
  742.    }
  743.    else { // otherwise disable the buttons
  744.        SetButtonState(bSelC,"1");
  745.        SetButtonState(bUselC,"1");
  746.    }
  747.     PopUpDiv.style.display = ""; // enable Pop-Up
  748.     SpecificationsMade = false; // reset Flag
  749.     processAlLookup(); // initaite read for Alert Groups and Services
  750. }
  751. function processDoneButton() {
  752.     PopUpDiv.style.display = "none";
  753.     if ( SpecificationsMade ) {  // if any change made
  754.         // save Filter and Computer Store and refresh Log
  755.         RpmCC_VA.RegSetKey(top.banner.ServerID+"ServerWatchFilterArray",AC_FilterStoreArr.join("~"));
  756.         processRefresh();
  757.         WarningBox.style.display = "";
  758.         Tid = setTimeout("finishDone()",50); // Delay 
  759.     }
  760.     top.Rstatus.Pstat("Done");
  761. }
  762. /* Get MRU Log Messages for ServerWatch */
  763. function finishDone() {
  764.     Tid = null; // reset
  765.     RpmCC_VA.GetServicesLogMRU(); // get most recent Server log ServerWatch messages
  766.    //SpecifyButton.className = "BoxButton"; // enable button
  767.    SpecifyButton.disabled = ""; // enable button
  768.     top.banner.processStopCommX();
  769. }
  770.  
  771. // Process to Toggle the Hide and Show of the Banner & Menu Frames
  772. var hideToggle = 0;
  773. var TitleDivSize = 98;
  774. function processBannerMenu() {
  775.     if ( hideToggle == 0 ) {
  776.         top.BannerMenuHide(); hideToggle = 1;
  777.         ServerWatchTitleDiv.style.display = "none"; 
  778.         TitleDivSize = 54; 
  779.     }
  780.     else {
  781.         top.BannerMenuShow(); hideToggle = 0;   
  782.         ServerWatchTitleDiv.style.display = "";  
  783.         TitleDivSize = 98;
  784.     } 
  785.     processSizeChange(); 
  786. }
  787. function PopUpContextOpen() {
  788. }
  789. function PopUpContextClose() {
  790. }
  791.  
  792. var MRUDataArr = new Array();
  793. var MRUDataArrIndex = 0;
  794. function processLogMRUData() {
  795.     for ( var i=0; i < 10 && MRUDataArrIndex < MRUDataArr.length; i++, MRUDataArrIndex++ ) {
  796.         procRcv(MRUDataArr[ MRUDataArrIndex ].length, MRUDataArr[ MRUDataArrIndex ], "");   
  797.     }
  798.     if ( MRUDataArrIndex < MRUDataArr.length ) {
  799.         LTid = setTimeout("processLogMRUData()",100); // Delay 100 msecs then continue
  800.     }
  801.     else {
  802.         MRUDataArr.length = 0;
  803.         if ( STid == null ) {
  804.             STid = setTimeout("GoDoSort()",1000); // Delay before sorting
  805.         }
  806.     }    
  807. }
  808. //-->
  809. </script>
  810.  
  811. <script LANGUAGE="JavaScript" src="js/MiscFunc.js"></script>
  812. <script LANGUAGE="JavaScript" src="js/ButtonFunc.js"></script>
  813. <script LANGUAGE="JavaScript" src="js/ServerWatchFunc.js"></script>
  814.  
  815. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="Connected()">
  816. <!--
  817. processConnectConfirmed();
  818. //-->
  819. </script> 
  820.  
  821. <script
  822. LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="DBChanged(cdata)">
  823. <!--
  824. var warr = new Array();
  825. warr = cdata.split("~"); // parse the event data
  826. // Ignore if Server Table change
  827. if ( warr[0] == "4" ) 
  828.     return; // ignore
  829.  
  830. top.Rstatus.StatDB.style.display = "";
  831. if ( CTid == null ) {
  832.     CTid = setTimeout("processDBChanged()",30000); // Delay 30 secs then process
  833. }
  834. //-->
  835. </script>
  836.  
  837. <script
  838. LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="Disconnected()">
  839. <!--
  840. top.Rstatus.Pstat("Disconnected",true);
  841. if ( Tid != null ) {
  842.     clearTimeout(Tid); // stop timeout routine
  843. }
  844. Tid = setTimeout("processReconnect()",10000); // Delay 10 secs then try reconnnect
  845. //-->
  846. </script>
  847.  
  848. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ServicesLogMRUData(dStrg)">
  849. <!--
  850. WarningBox.style.display = "none";
  851. WarningBox1.style.display = "none";
  852. MRUDataArr = dStrg.split("???"); // parse message
  853. MRUDataArrIndex = 0;
  854. processLogMRUData();
  855. //-->
  856. </script> 
  857.  
  858. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ServicesLogMRUOpComplete()">
  859. <!--
  860. WarningBox.style.display = "none";
  861. WarningBox1.style.display = "";
  862. top.Rstatus.Pstat("No status messages available",true);
  863. top.banner.processStopCommX(); 
  864. //-->
  865. </script> 
  866.  
  867. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ServicesLogMRUOpError()">
  868. <!--
  869. WarningBox.style.display = "none";
  870. WarningBox1.style.display = "";
  871. top.Rstatus.Pstat("Error attempting to get most recent status messages",true);
  872. top.banner.processStopCommX(); 
  873. //-->
  874. </script> 
  875.  
  876. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ComputerLookupRecord(Cid,Gid,SrvID,Nme,Desc,Pswd,OSVer,Addr,Port)">
  877. <!--
  878. processCompAddToStore(Nme,Desc,Cid,Addr);
  879. if (ALupMode == "SrvComputerLookupEdit") {
  880.     processEditSrvComputer(Nme,Desc,Cid);
  881. }
  882. //-->
  883. </script> 
  884.  
  885. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="AlertGroupOpComplete()">
  886. <!--
  887. processAlertOpComplete();
  888. //-->
  889. </script> 
  890.  
  891.  
  892. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ComputerOpComplete()">
  893. <!--
  894. if (ALupMode == "SrvComputerLookupEdit") {
  895.     processEditSrvComputerComplete();
  896. }
  897. else {
  898.     if ( ALupMode == "InitComputerLookup" ) {
  899.         if ( GetMRU == true ) {
  900.             RpmCC_VA.GetServicesLogMRU(); // get most recent Server log ServerWatch messages
  901.         }
  902.         RpmCC_VA.AllowNewMessages(); // enable new Server Log messages to be sent
  903.     }
  904.     ALupMode= "";
  905.     top.Rstatus.Pstat("Request Completed");
  906. }
  907. //-->
  908. </script> 
  909.  
  910. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="AlertGroupOpError()">
  911. <!--
  912. processAlertOpError();
  913. //-->
  914. </script> 
  915.  
  916. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ComputerOpError()">
  917. <!--
  918. processComputerOpError();
  919. //-->
  920. </script> 
  921.  
  922. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="ReceiveText(nLength, szText)">
  923. <!--
  924. procRcv(nLength, szText, "");
  925. //-->
  926. </script>
  927.  
  928. <script FOR="RpmCC_VA" EVENT="ServicesRecord(SRVstrg)">
  929. <!--
  930. processServicesRecord(SRVstrg);
  931. //-->
  932. </script>
  933. <script FOR="RpmCC_VA" EVENT="ServicesOpComplete()">
  934. <!--
  935. processServicesOpComplete();
  936. //-->
  937. </script> 
  938. <script FOR="RpmCC_VA" EVENT="ServicesOpError()">
  939. <!--
  940. processServicesOpError();
  941. //-->
  942. </script>
  943.  
  944. <script LANGUAGE="JavaScript" FOR="RpmCC_VA"
  945. EVENT="AlertGroupLookupRecordPart1(AlID, AlName, AlDesc, AlThresh, AlOver, AlEveryTime, AlDur, AlSched, AlSDT, AlEDT, AlArrayIDs)">
  946. <!--
  947. AlertLupRec(AlID, AlName, AlDesc);
  948. //-->
  949. </script>
  950.  
  951. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="StartCommunication()">
  952. <!--
  953. //top.banner.processStartComm();
  954. //-->
  955. </script> 
  956.  
  957. <script LANGUAGE="JavaScript" FOR="RpmCC_VA" EVENT="StopCommunication()">
  958. <!--
  959. top.banner.processStopCommX();
  960. //-->
  961. </script> 
  962.  
  963. <script LANGUAGE="JavaScript" src="js/PopUpMenuFunc.js"></script>
  964.  
  965. <object ID="RpmCC_VA" NAME="RpmCC_VA" WIDTH="14" HEIGHT="1" style="display:none"
  966. CLASSID="CLSID:D88C2358-FC83-11D1-BF49-00104B2D6F80" CODEBASE="controls/RPMComm.cab#version=5,2,0,0">
  967.   <param name="_Version" value="65536">
  968.   <param name="_ExtentX" value="2646">
  969.   <param name="_ExtentY" value="1341">
  970.   <param name="_StockProps" value="0">
  971. </object>
  972.  
  973. <!-- Invisible Object to Support Simulated Click Event -->
  974. <button id="FakeBut" style="display:none" onclick="top.banner.savePageCoord(event,document.body,'ServerWatch')">
  975. </button>
  976.  
  977. <!-- Define Images used in dynamic HTML generation to force loading and caching now -->
  978. <div style="display:none">
  979. <img src="images/sMicroscope.gif"><img src="images/White.gif"><img src="images/Computer.gif">
  980. <img src="images/Lplus.gif"><img src="images/I.gif"><img src="images/Tplus.gif">
  981. <img src="images/L.gif"><img src="images/topopen.gif"><img src="images/T.gif">
  982. <img src="images/sAdminServers.gif">
  983. </div>
  984.  
  985. <center>
  986.  
  987.  <div id="VA_MainBox" class="VAMainBox" style="display:none">
  988.  
  989.  
  990. <!-- PopUp to Prompt for Services/Computers To Monitor -->
  991.  
  992. <div id="PopUpDiv" class="PopUpSSBox" style="display:none; overflow : none; left:150; top:150; ">
  993.      <center>
  994.        <table width="100%" align="center" border="0" cellspacing="0" cellpadding="0" >
  995.        
  996.          <tr><td height="23" style="font-weight:800; font-size:11pt; background-color:graytext; color:captiontext" align="center">Specify Status Log Display Filter</td></tr>
  997.  
  998.              <tr><td height="5" class="inputlabel" align="right"></td></tr>
  999.  
  1000.             <tr><td width="100%" class="optext" align="center"><div id="AL_CCOneServ" class="PopUpBox"></div></td></tr>
  1001.  
  1002.              <tr><td height="3" class="inputlabel" align="right"></td></tr>
  1003.                
  1004.         <tr align="center"><td width ="100%"><table border="1" cellspacing="1" cellpadding="1" height="40" width="100%"><tr><td align="center"><button onclick="processSelect('0')" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" style="width:80px; height:28px" id="bSelC" disabled><img src="images/selectall.gif" align="absmiddle" height="15" width="14">Select All</button>  <button onclick="processSelect('1')" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" style="width:93px; height:28px" id="bUselC" disabled><img src="images/unselectall.gif" align="absmiddle" height="15" width="14">Unselect All</button>  <button id="DoneButton" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" title="" style="width:80px; height:28px" onClick="processDoneButton()"><img src="images/CloseImg.gif" align="absmiddle" height="14" width="15"> Close  </button> </td></tr></table></td></tr>
  1005.      </table>
  1006.       </center>  
  1007. </div>
  1008.  
  1009. <!--  End of Pop-Up ---------------------------------------------->
  1010.  
  1011. <!-- PopUp to Prompt for Set Graph Scale -->
  1012.  
  1013.     <div id="PopUpSS" class="PopUpSSBox" style="display:none; left:150; top:150; width:300">
  1014.      <center><table width="100%" align="center" border="0" cellspacing="0" cellpadding="0" >
  1015.      
  1016.          <tr><td height="23" style="font-weight:800; font-size:11pt; background-color:graytext; color:captiontext" colspan="2" align="center">Set Response Time Graph Scale Max</td></tr>
  1017.  
  1018.                <tr><td colspan="2" height="10" class="inputlabel" align="right"></td></tr>
  1019.  
  1020.                 <tr><td height="10" width="100%" class="optext" align="center"><select SIZE="1" NAME="SS_Scale"></select></td></tr>
  1021.  
  1022.              <tr><td colspan="2" height="30" class="inputlabel" align="right"></td></tr>
  1023.             </table>
  1024.             
  1025.             <table width="100%" align="center" border="0" cellspacing="1" cellpadding="2" >
  1026.         <tr><td align="center" width ="100%"><button id="CloseSSButton" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" title="Close" style="width:75px; height:29px" onClick="processDoneScale()" ><img src="images/CloseImg.gif" align="absmiddle" height="14" width="15">Close </button> </td></tr>
  1027.            <tr><td height="5" class="inputlabel" align="center"> </td></tr>
  1028.       </table></center>
  1029.       
  1030.    </div>
  1031.  
  1032. <!--  End of Pop-Up ---------------------------------------------->
  1033.  
  1034.  
  1035.   <div id="ServerWatchTitleDiv"><table border="1"  borderColor="activeborder" align="left">
  1036.     <tr ><td borderColorDark="graytext" borderColorLight="white" height="25" style="font-weight:800; font-size:12pt; background-color:threedhighlight; color:windowtext"> <img src="images/sMicroscope.gif" align="absmiddle" height="16" width="16"> Server Watch Display </td></tr>
  1037. </table>
  1038. <BR CLEAR=ALL><HR align="left"></div>
  1039.  
  1040.  
  1041. <center class="inputlabel">Server Status Log</center>
  1042. <div class="EventLog" ID="ELogWin" style="width:98%" align="center" >
  1043. <center><div style="display:none; width:100%" id="WarningBox" align="center"><table border="0" cellpadding="0" cellspacing="2">
  1044.   <tr>
  1045.     <td width="43"><img src="images/HourGlass.gif" width="32" height="32" alt="Please Wait!" align="bottom" border="0"></td>
  1046.     <td width="*" style="font-family:Arial; font-size:10pt; font-weight:bold; color:infotext">Please Wait For Most Recent Status Messages!</td>
  1047.   </tr>
  1048. </table>
  1049. </div>
  1050. <div style="display:none; width:100%" id="WarningBox1" align="center"><table border="0" cellpadding="0" cellspacing="2">
  1051.   <tr>
  1052.     <td width="*" style="font-family:Arial; font-size:10pt; font-weight:bold; color:red">There Are No Most Recent Status Messages Available!</td>
  1053.   </tr>
  1054. </table>
  1055. </div></center>
  1056.  
  1057. <span id="ELogText"></span><select id="ELogArray" style="display:none"></select></div>
  1058.  <div style="height:0px; width:100%" align="center">
  1059.    <table border="1" cellspacing="1" cellpadding="1" height="40" width="100%">
  1060.     <tr>
  1061.         <td width="25%" align="left" class="inputlabel"><span title="Display Down Services at Top"><INPUT TYPE="checkbox" NAME="ServiceDownAtTop" id="ServiceDownAtTop" class="inputlabel" onclick="processServiceDownAtTopClick()" CHECKED>Failures At Top</span></td>
  1062.         <td align="center" width ="50%"><button id="ClearButton" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" title="Clear the Event Log" style="width:85px; height:29px" onClick="processClearButton()" disabled><img src="images/unselectall.gif" align="absmiddle" height="15" width="14"> Clear Log</button> <button id="SpecifyButton" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" title="Specify Servers/Services to Monitor" style="width:115px; height:29px" onClick="processSpecifyButton()" > <img src="images/ConfigImg.gif" align="absmiddle" height="18" width="17">Configure Filter</button> <button id="StatusPrintButton" title="Print ServerWatch Status Log" onclick="if (this.bdis == '0') processPrintStatus();" bdis="0" style="width:85px; height:29px" style="font-family:arial; font-size : 8pt; font-weight : 600; cursor:hand" DISABLED><img src="images/Printer.gif" align="absmiddle" height="15" width="17"> Print</button></td>
  1063.         <td width="25%" class="inputlabel" align="right"><span title="Highlight the last entry updated in the ServerWatch Display"><INPUT TYPE="checkbox" NAME="TrackLastEnabled" id="TrackLastEnabled" class="inputlabel" onclick="processTrackLastClick()" CHECKED>Track Last</span>   <button onclick="processBannerMenu()" title="Press to Toggle Hide/Show of Menu and Banner Frames" style="cursor:hand"><img src="images/FullView.gif" align="absmiddle" height="16" width="16"></button></td></tr>
  1064.    </table>
  1065.   </div>
  1066.  </center></div>
  1067.  
  1068. </center>
  1069. </body>
  1070. </html>
  1071.